草庐IT

Android Opengl FBO 离屏

全部标签

Cesium 中的离屏渲染

Cesium中的离屏渲染本文参考了众多文章,均列在了最后。先感谢各位的分享精神,如觉有冒犯,请与我联系。部分内容来自个人理解,欢迎指正交流。为了达到更加真实的渲染效果或其他计算需求,很多时候需要利用被渲染物体在其他状态下(比如通过另一相机渲染)的中间渲染结果,处理到最终显示的渲染场景中。这种中间渲染结果,就保存在帧缓冲区对象(FrameBufferObject,FBO)中,包含颜色缓冲区和深度缓存区。由于其结果并不直接被显示出来,所以这种技术也被称为离屏渲染(Off-ScreenRendering)。在深入了解Cesium的离屏渲染前,需要先了解WebGL的渲染过程。WebGL渲染过程大家都知

windows - 如何在 Windows 版 QuickTime 中进行高分辨率离屏渲染?

我需要在Windows上将QuickTime电影渲染到可能不是电影自然大小的GWorld中。当电影按比例放大时,比如放大1.5倍,我会看到一些锯齿。然而,如果我在QuickTimePlayer(WindowsVista上的版本7.6.6)中打开同一部电影并拉伸(stretch)窗口,我会在拉伸(stretch)时看到锯齿,但当我松开鼠标时,图像会变得平滑。它必须使用一些更智能的缩放算法或抗锯齿。除了SetMovieGWorld和SetMovieBox之外,我还需要做什么才能以更大的尺寸呈现?这里有一些流畅的版本:(来源:frameforge3d.com)这是略带锯齿的对应物:(来源:f

java - 在 Java 中创建离屏框架(或当所有应用程序窗口关闭时为 : how to avoid a blank menu on a Mac,)?

我正在制作一个Mac应用程序,我希望我的菜单栏看起来正确。任何Mac用户都知道菜单栏应该位于顶部屏幕菜单中。在属性列表文件中将apple.laf.useScreenMenuBar设置为true可以摆脱框架内的菜单栏,并将当前聚焦窗口的菜单栏移动到屏幕菜单.但是,当所有窗口都隐藏或没有窗口时,没有菜单栏可以移动到顶部,你只会得到一个空白菜单。我听说解决这个问题的方法是创建一个屏幕外窗口,在没有其他窗口时聚焦。它的唯一目的是它的菜单,以便它可以在其他菜单消失时填写。但是,我遇到了很多问题。我似乎无法将窗口移出屏幕,因为Mac不允许您将坐标设置为超过屏幕大小的值;它只是将其切断并将其定位在边

c++ - XRender 创建离屏图片

我正在尝试创建一个合成窗口管理器。到目前为止它可以工作,但是当一个窗口覆盖另一个窗口时,它会像疯了似的闪烁。我发现是因为我在创建一个Picture,然后给它画画,导致它画到屏幕上。我想要的行为是有一个屏幕外的Picture我可以绘制,然后使用XComposite将其绘制到屏幕上的窗口。有什么方法可以让屏幕外的Picture与根窗口大小相同?到目前为止(这段代码在无限循环中运行):Windowroot,parent,*children;uintchildren_count;XQueryTree(disp,DefaultRootWindow(disp),&root,&parent,&chi

c++ - 使用 Qt5 进行离屏渲染(openGL)

利用openGL做一些图像处理,第一个实验是将彩色图像转换为灰色,一切都很好,除了我不想显示小部件。如果我不调用“show()”,QGLWidget将不会开始渲染纹理我可以在不显示小部件的情况下渲染纹理吗?QGLWidget是一个合适的工具吗?部分代码#include#include"toGray.hpp"toGray::toGray(std::stringconst&vertex_file,std::stringconst&fragment_file,QWidget*parent):basicGLWidget(vertex_file,fragment_file,parent)//re

c++ - 离屏绘图GDI+

我有一个问题-我需要绘制两个png文件,一个放在另一个上。当我以通常的方式进行操作时,会出现“闪烁”效果(第一张图像在短时间内overdraw第二张图像)。我使用GDI+库,我的WM_PAINT处理看起来像这样:caseWM_PAINT:{PAINTSTRUCTps;HDChdc=BeginPaint(hwnd,&ps);displayImage(firstImage,hwnd);displayImage(secondImage,hwnd);EndPaint(hwnd,&ps);break;}显示图像函数:voiddisplayImage(HBITMAPmBmp,HWNDmHwnd){

c++ - 在 Windows 上创建并行离屏 OpenGL 上下文

我正在尝试设置并行多GPU离屏渲染上下文。我使用“OpenGLInsights”一书第27章“NVIDIAQuadro上的多GPU渲染”。我还研究了wglCreateAffinityDCNVdocs但仍然无法确定。我的机器有2个NVidiaQuadro4000卡(无SLI)。在Windows764位上运行。我的工作流程是这样的:使用GLFW创建默认窗口上下文。映射GPU设备。销毁默认的GLFW上下文。为每个设备创建新的GL上下文(目前只尝试一个)为每个上下文设置boost线程并使其在该线程中处于当前状态。分别在每个线程上运行渲染程序。(不共享资源)一切都是在没有错误的情况下创建和运行的

c++ - QGLWidget 和快速离屏渲染

是否可以使用Qt在QGLWidget中完全脱离屏幕进行渲染,而无需将场景重新绘制到屏幕,从而避免缓冲区在监视器上完全翻转?我需要保存在帧缓冲区上生成的每一帧,但是,由于序列由4000帧组成并且屏幕上的时间间隔为15ms我花费了4000*15ms=60s但我需要比60s快得多(计算不是这里的瓶颈,只是更新问题)。在帧缓冲区上进行离屏渲染可以更快吗?我可以避免QGLWidget中的显示器刷新率吗?如何在没有缓慢的paintGL()调用的情况下完全在帧缓冲区上渲染? 最佳答案 现在我假设我们正在谈论Qt4。Isitpossibletore

ios - 与 iOS9 (OGLES2.0) 相比,iOS10/11 下的离屏渲染性能大幅下降

背景:我们正在开发的游戏在更新到iOS10或11的设备上性能急剧下降。两台运行10.3.3的iPhone6s只能达到20-30fps,而仍在运行8.0的iPhone5s则轻松达到60帧/秒。最近,我将iPod6从ios9更新到ios11,在运行完全相同的游戏版本时它也从60fps下降到20-30fps。注意:最初GPU分析器让我相信这是一个与着色器相关的问题,但这是一个错误的线索。感谢所有在此基础上发表评论的人。以下是我缩小问题范围的方法:正常运行时,我们的游戏每帧生成以下屏幕外纹理:10个256x256的玩家阴影(不涉及alpha混合)11个128x256到256x256动画“电视屏

java - 我应该依靠 Android 来丢弃离屏绘制吗?

我有一个函数,它采用无缝位图并使用世界坐标在屏幕上向任何方向滚动它。有4个绘制(播放区域小于整个位图大小。所以最多,您将看到4个位图副本,只是绘制了不同的部分以保持无缝效果)。我想知道的是,我是否应该对矩形边界进行修改,以便它只将应该显示在屏幕上的部分显示出来?或者我应该让Android处理吗?如果我自己做,我应该如何处理?就数学而言,世界坐标和翻译真的让我感到困惑。:/这是代码。publicvoiddraw(Canvascanvas){oCoords.x=(int)fX;oCoords.y=(int)fY;oTopLeft=gridContainingPoint(oCoords);o